<?php

YuppLoader::load('cms2.model.menumodule', 'MenuModule');

class MenuModuleController extends YuppController {

   /**
    * Agrega una pagina al menu.
    * Se llamara desde ajax en el edit del menu.
    */
   public function addPageAction()
   {
      
   }

   /**
    * Quita una pagina del menu.
    * Se llamara desde ajax en el edit del menu.
    */
   public function removePageAction()
   {
      
   }
   
   /**
    * Edita la informacion del menu.
    * Desde aqui se podran agregar o quitar paginas del menu.
    */
   public function editAction()
   {
      $module = MenuModule::get($this->params['id']);
      
      if (isset($this->params['doit']))
      {
         // Saca todas las paginas del menu.
         foreach ($module->getPages() as $page)
         {
            $module->removeFromPages( $page );
         }
          
         // Pone todas las paginas seleccionadas en la edicion
         foreach ($this->params['items'] as $pageId)
         {
            $module->addToPages( Page::get($pageId) );
         }
         
         $module->setVertical( isset($this->params['vertical']) );
         $module->setLevel( isset($this->params['level']) );
         
         if (!$module->save()) print_r($module->getErrors());
         
         // no hacer redirect si la accion se ejecuta por ajax
         //return $this->redirect(array('controller'=>'cms', 'action'=>'displayPage', 'params'=>array('pageId'=>$this->params['pageId'])));
         return $this->renderString('Modulo salvado correctamente');
      }
      
      // Obtener paginas que no estan en el menu
      // Ciudado al armar la consulta, la condicion AND es valida solo si el menu tiene alguna pagina.
      if (count($module->getPages()) != 0)
      {
         $tableName = YuppConventions::tableName( 'Page' );
         $condition = Condition::_AND();
         foreach ($module->getPages() as $page)
         {
            $condition->add( Condition::NEQ($tableName, "id", $page->getId()) );
         }
         $pagesNotInMenu = Page::findBy( $condition, new ArrayObject() );
      }
      else
      {
         $pagesNotInMenu = Page::listAll( new ArrayObject() ); // Todas las paginas NO estan en el menu
      }
      
      return array('module'=>$module, 'pagesNotInMenu'=>$pagesNotInMenu);
      //return $this->renderTemplate('edit', array('module'=>$module));
   }
}

?>